home *** CD-ROM | disk | FTP | other *** search
/ Mac Mania 2 / MacMania 2.toast / Demo's / Tools&Utilities / Programming / PowerLisp 1.1 / Library / defpackage.lisp < prev    next >
Encoding:
Text File  |  1994-03-25  |  981 b   |  39 lines  |  [TEXT/ROSA]

  1. ;;;
  2. ;;;        Copyright © 1994 Roger Corman.  All rights reserved.
  3. ;;;
  4.  
  5. ;
  6. ;    File:        defpackage.lisp
  7. ;    Contents:    defpackage implementation for PowerLisp.
  8. ;
  9.  
  10. (in-package :common-lisp)
  11. (provide :defpackage)
  12.  
  13. (defmacro defpackage (name &rest options)
  14.     `(eval-when (:load-toplevel :compile-toplevel :execute)
  15.         (let ((package (find-package ',name)))
  16.             (if (null package)
  17.                 (setq package (make-package ',name)))
  18.             (dolist (opt ',options)
  19.                 (if (not (consp opt))
  20.                     (error "Invalid defpackage option--should be a list: ~A~%"
  21.                         opt))
  22.                 (ecase (car opt)
  23.                     (:size nil)        ;; ignore this for now
  24.                     (:nicknames (rename-package ',name ',name (cdr opt)))
  25.                     (:shadow (shadow (cdr opt) ',name))
  26.                     (:shadowing-import-from (shadowing-import (cdr opt) ',name))
  27.                     (:use (use-package (cdr opt) ',name))
  28.                     (:import-from (import (cdr opt) ',name))
  29.                     (:intern (dolist (sym (cdr opt))
  30.                                 (intern sym ',name)))
  31.                     (:export (export (cdr opt) ',name))))
  32.                 package)))
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.